package com.itheima.ribbon.client.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RoundRobinRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RibbonConfig {
    
    /**
     * 在此类中为IoC 容器中注入一个RestTemplate 的Bean ，
     * 并在这个Bean 上加上@LoadBalanced 注解，此时RestTemplate 就结合了
     * Ribbon 开启了负载均衡功能。
     *
     * @return
     */
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
    
    /*
     * @Description: 轮询,
     * 代码的优先级高,覆盖了配置
     * @Method: microServiceRule
     * @Param: []
     * @Update:
     * @since: 1.0.0
     * @Return: com.netflix.loadbalancer.IRule
     *
     */
    // @Bean
    public IRule microServiceRule() {
        return new RoundRobinRule();
//        return new RandomRule();
    }
    
}
